// This file is part of OpenMeca, an easy software to do mechanical simulation.
//
// Author(s)    :  - Damien ANDRE  <openmeca@gmail.com>
//
// Copyright (C) 2012 Damien ANDRE
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.


#include <QApplication>
#include <iostream>

#include "OpenMeca/Gui/WidgetPoint.hpp"
#include "OpenMeca/Util/Dimension.hpp"
#include "OpenMeca/Util/Unit.hpp"

namespace OpenMeca
{
  namespace Gui
  {
    WidgetPoint::WidgetPoint(QWidget* parent)
      :QWidget(parent),
       WidgetInterface<Geom::Point<_3D> >(*parent),
       dim_(0)
    {
      Ui::WidgetPoint::setupUi(this);
      x_->SetLabel(QObject::tr("X"));
      y_->SetLabel(QObject::tr("Y"));
      z_->SetLabel(QObject::tr("Z"));
    }

    WidgetPoint::~WidgetPoint()
    {
    }

    
    void 
    WidgetPoint::SetDimension(const Util::Dimension& dim)
    {
      dim_ = &dim;

      x_->SetDimension(dim);
      y_->SetDimension(dim);
      z_->SetDimension(dim);
    }



     void 
     WidgetPoint::Init()
    {
      const Geom::Point<_3D>& p =  WidgetInterface<Geom::Point<_3D> >::GetValue();    
      x_->SetNumber(p[0]);
      y_->SetNumber(p[1]);
      z_->SetNumber(p[2]);
    }
    

    void 
    WidgetPoint::SetLabel(const QString& str)
    {
      groupBox_->setTitle(str);
    }
   
    bool
    WidgetPoint::Check()
    {
      double x, y, z;
      bool ok = (x_->CheckUserEntry(x) && y_->CheckUserEntry(y) && z_->CheckUserEntry(z));
      if (ok)
	{
	  Geom::Point<_3D> &p = WidgetInterface<Geom::Point<_3D> >::GetCopy();
	  p[0] = x;
	  p[1] = y;
	  p[2] = z;
	}
      return ok;
    }

  }
}


